import re
import numpy as np


class ReMatchFunc(object):

    # @classmethod
    # def tiChuShuMingHao(cls, source_title):
    #     '''
    #     剔除书名号包裹的字符串
    #     :return:
    #     '''
    #     new_source_title = source_title
    #     if '《' in source_title and '》' in source_title:
    #         pattern = r'《.*》'
    #         s = re.findall(pattern, source_title)
    #         # print(s)
    #         if s:
    #             for item in s:
    #                 new_source_title = new_source_title.replace(item, ';')
    #
    #     return new_source_title

    @classmethod
    def zhengtiming(cls, split_list):
        '''
        正题名
        :param split_list:
        :return:
        '''

        zhengtiming_list = []
        zhengtiming_standard_list = '乞丐与窃，20首情诗和一支绝望的歌，阿格尼丝·格雷，阿马罗神父的罪恶，啊，是你在我的坟上挖掘么，哀格蒙特' \
                                    '，艾凡赫，爱的歌，爱的教育，爱花园，爱丽丝镜中奇缘，爱丽丝漫游仙境，爱情和自由，安德洛玛刻，安娜·卡列尼娜' \
                                    '，安娜贝尔·李，安提戈涅，安徒生童话选，傲慢与偏见，奥勃洛摩夫，奥塞罗，巴巴拉少校，巴比特，巴黎的秘密，' \
                                    '巴黎圣母院，巴马修道院，白鲸，白夜，白衣女人，百年孤独，百万富翁，柏林之围，败坏了赫德莱堡的人，' \
                                    '拜伦诗选，包法利夫人，悲惨世界，贝亚特丽丝的魅力，被缚的普罗米修斯，彼得大帝，变形记，冰岛恶魔，' \
                                    '布登勃洛克一家，布热日隆子爵，苍蝇，草叶集，茶花女，查拉斯图特拉如是说，查泰莱夫人的情人，忏悔录，' \
                                    '成功，城堡，城堡风云，乘着歌声的翅膀，赤裸太阳，初恋，窗边的小豆豆，春香传，茨威格中短篇小说选，' \
                                    '大胆妈妈和她的孩子们，大地，大街，大雷雨，大卫·科波菲尔，当初我们俩分别，当你老了，当一切入睡，刀锋' \
                                    '，岛，道连·葛雷的画像，德伯家的苔丝，灯塔看守人，等待戈多，等着我吧，底层，地洞，第二十二条军规，第十二夜，' \
                                    '第四十一，东方快车谋杀案，董贝父子，动物庄园，俄狄浦斯王，恶之花，法尼娜·法尼尼，帆，烦闷，飞鸟集，' \
                                    '费尔迪杜凯，费加罗的婚姻，愤怒的葡萄，丰饶之海，疯狂的石榴树，弗兰肯斯坦，浮士德，福尔摩斯探案集，福谷' \
                                    '传奇，斧头之歌，父与子，复活，富人与穷人，钢窟，钢铁是怎样炼成的，高尔夫球场谋杀案，高老头，格列佛游' \
                                    '记，格林童话，公园里，古舟子行，观察乌鸦德十三种方式，哈克贝利费恩历险记，哈克贝利芬历险记，哈利波特' \
                                    '，哈姆雷特，还乡，海底两万里，海螺，海涅抒情诗选，海鸥，海水谣，寒水岭匪帮，嚎叫，好兵帅克历险记，贺拉' \
                                    '斯，黑桃皇后，亨利·埃斯蒙德，亨利四世，红与黑，红字，呼啸山庄，蝴蝶梦，华伦夫人的职业，怀尔德菲尔山庄' \
                                    '的房客，欢乐颂，幻灭，荒凉山庄，荒野的呼唤，荒园，荒原，黄昏的和谐，火与剑，饥饿的艺术家，基督山伯爵，' \
                                    '吉檀迦利，纪念艾米莉的一朵玫瑰花，嘉丽妹妹，假如生活欺骗了你，简·爱，箭与歌，交叉小径的花园，绞刑架下' \
                                    '的报告，教父，教师，解放了的普罗米修斯，金银岛，荆棘鸟，惊醒的时间，精灵宝钻，警察与赞美诗，竞选州长' \
                                    '，静静的顿河，九三年，局外人，巨人传，绝对之探求，君往何处，喀秋莎，卡拉马佐夫兄弟，卡里古拉，卡门，' \
                                    '开会迷，凯恩舰哗变，坎德伯雷故事集，看房人，科隆巴，克莱采奏鸣曲，克兰比尔，克洛德·格，孔雀东南飞，苦' \
                                    '难的历程，来，一只看不见的笛子，癞皮鹦鹉，老虎，老人，老人与海，了不起的盖茨比，离骚，李尔王，理智与情' \
                                    '感，力士森孙，恋爱中的女人，猎人笔记，吝啬鬼，六个寻找剧作者的剧中人，卢宫秘史，鲁拜集，鲁滨逊漂流记' \
                                    '，论人生，罗米欧与朱丽叶，罗密欧与朱丽叶，罗摩衍那，罗摩衍娜，罗慕洛皇帝，罗生门，裸者与死者，驴皮记' \
                                    '，绿衣亨利，马丁·伊登，马克·吐温短篇小说集，玛戈王后的项链，麦克白，麦琪的礼物，麦田里的守望者，漫游' \
                                    '者的夜歌，毛猿，没有人给他写信的上校，梅里美中短篇小说集，美狄亚，美国的悲剧，萌芽，蒙田随笔，朦胧种所' \
                                    '见德生活，梦的解析，迷娘歌，名利场，摩诃摩耶，摩诃婆罗多，魔山，莫泊桑中短篇小说集，莫罗博士岛，母亲' \
                                    '，木兰辞，木木，牧歌，幕府将军，娜娜，尼尔斯骑鹅旅行记，你就象一朵花，牛虻，诺言，女店主，哦，船长，我' \
                                    '的船长，欧·亨利短篇小说集，欧那尼，欧也妮·葛朗台，潘登尼斯，陪衬人，皮尔·金特，皮袜子故事集，琵琶行，' \
                                    '飘，苹果车，苹果树，普希金抒情诗选，奇婚记，乞力马扎罗的雪，契诃夫短篇小说选，强盗，蔷薇园，钦差大臣，' \
                                    '秦妇吟，青年近卫军，情人，秋，热爱生命，人民公敌，人生颂，日瓦格医生，瑞普·凡·温克尔，塞维利亚的理发' \
                                    '师，三剑客，三姐妹，丧失了名誉的卡塔林娜·勃洛姆，丧钟为谁而鸣，沙恭达罗，莎乐美，莎士比亚全集，傻瓜威' \
                                    '尔逊，伤心之家，上尉的女儿，少年维特的烦恼，少年维特之烦恼，神秘岛，神曲，生命中不能承受之轻，圣诞故' \
                                    '事集，圣女贞德，失乐园，失去的恋人，诗歌总集，诗经，十日谈，十字军骑士，时间机器，市场街的斯宾诺莎，双' \
                                    '城记，斯巴达克斯，死的十四行诗，死魂灵，死无葬身之地，四个四重奏，四十五卫士，送冰人来了，太太学堂，汤' \
                                    '姆·索亚历险记，汤姆琼斯史，汤姆叔叔的小屋，唐璜，堂吉诃德，特雷庇姑娘，天鹅，天路历程，挑战的手套，铁皮' \
                                    '鼓，庭长夫人，童年，秃头歌女，推销员之死，外套，玩偶之家，万尼亚舅舅，万叶集，往事，危地马拉的周末，' \
                                    '威尼斯商人，维莱特，伪君子，未完成的故事，未选择的路，我，机器人，我饱尝了爱情的折磨，我部叹惋，我辞' \
                                    '别了我出生的屋子，我的大学，我的名字叫红，我的心呀在高原，我见过你哭，我生性就是如此，我失去的青春，' \
                                    '我是猫，我听见美洲在歌唱，我沿着初雪漫步……，我愿意是急流，我坐在大地上，无神论者做弥撒，五月的晨歌，' \
                                    '舞会之后，舞姬，物理学家，雾都孤儿，西风颂，西西里柠檬，西线无战事，希腊古翁颂，熙德，喜剧六种，细雪' \
                                    '，先知，先知·论爱，先知·论美，献给司爱神女，相逢与别离，象棋的故事，橡树，小妇人，小酒店，小王子，心' \
                                    '是孤独的猎手，熊，喧哗与骚动，雪国，雪莱诗选，牙买加旅店，雅歌，羊泉村，阳光下的罪恶，叶甫盖妮·奥涅金' \
                                    '，夜莺颂，一朵红红的玫瑰，一个盲人，一个陌生女人的来信，一个女人一生中的二十四小时，一个人的遭遇，一颗' \
                                    '简单的心，一仆二主，一千零一夜，一位女士的画像，一只心爱的猫在金鱼缸中淹死有感，伊豆的舞女，伊凡·杰尼' \
                                    '索维奇的一天，伊凡·伊里奇之死，伊则吉尔老婆子，遗失的世界，椅子，驿站长，阴谋与爱情，阴影的王国，茵梦' \
                                    '湖，茵纳斯弗利岛，隐身人，樱桃园，蝇王，永别了，武器，咏水仙，尤利西斯，幼狮，雨王汉德森，预感，欲望' \
                                    '号街车，元音，源氏物语，远离程嚣，约翰·克里斯朵夫，月光，月亮与六便士，云，云使，在路上，在一个地铁车' \
                                    '站，怎么办？，战争风云，战争与和平，战争与回忆，长恨歌，长跑运动员的孤独，珍妮姑娘，珍珠，芝加哥，纸船' \
                                    '，指环王，致大海，致凯恩，致云雀，智利地震，仲夏夜之梦，朱丽小姐，追忆似水年华，最后一个莫希干人，最后' \
                                    '一课，罪与罚，醉歌，呼唤和哭泣，不过只要是爱，是爱，就是美，我满怀着感激和爱，能否把你比作五月的璀璨，' \
                                    '可叹时运不济众人唾弃，傻子出国记，雪莉，洪流，蒙梭罗夫人，纽克姆一家，太阳照常升起，金钱，三幕悲剧，' \
                                    '放牧者，约瑟朝廷上的美国佬，艾玛，弗吉尼亚人，学生宿舍谋杀案，马丁·瞿述伟，交际花盛衰记，匹克威克先生' \
                                    '外传，远大前程，人间喜剧，打鹿将，二十年后，巨人，格兰特船长的女儿，儿子与情人，白色城堡，伤心咖啡馆之' \
                                    '歌，乡村和城市，没有指针的钟，地下人，墨西哥蓝调，孤独的旅人，梦之书，大瑟尔，孤独天使，雪，伊斯坦布' \
                                    '尔，虹，水浒传，西游记，红楼梦，金瓶梅，隋唐演义，牡丹亭，三言二拍，东周列国志，聊斋志异，儒林外史，' \
                                    '官场现形记，封神演义，徐霞客游记，天工开物，本草纲目，阿Q正传，骆驼祥子，家，子夜，围城，春，三言，' \
                                    '二拍，蛙，神墓，我们仨，致橡树，一代人，庆余年，北岛诗选，万物生长，国史大纲，呼兰河传，妻妾成群，人' \
                                    '生海海，一帘幽梦，尘埃落定，乖，摸摸头，山上的小屋，平凡的世界，射雕英雄传，江上的母亲，撒哈拉的故事' \
                                    '，呐喊，送你一颗子弹，向左走，向右走，多情剑客无情剑，可爱的洪水猛兽，大堰河，我的保姆，你的孤独，虽' \
                                    '败犹荣，面朝大海，春暖花开，三体，边城，活着，背影，乡愁，受戒，目送，秦腔，雨巷，白鹿原，钟鼓楼，红处' \
                                    '方，看见，草房子，稻草人，七里香，黄金时代，再别康桥，雅舍小品，文化苦旅，故都的秋，倾城之恋，我与地' \
                                    '坛，繁星，大地之灯，人间词话，美的历程，城南旧事，京华烟云，正在发育，康熙大帝，乡土中国，三寸金莲，' \
                                    '霸王别姬，牛棚杂忆，雨天的书，缘缘堂随笔，万历十五年，中国建筑史，邓小平时代，易中天中华史，把时间当' \
                                    '朋友，李银河说爱情，上帝掷骰子吗，雷雨，这些人，那些事，人生最美是清欢，你是人间四月天，显微镜下的大' \
                                    '明，舒克和贝塔历险记，周国平人生哲思录，我微笑着走向生活，莲花，鬼吹灯，斗破苍穹，喜宝，斗罗大陆，明' \
                                    '朝那些事儿，盘龙，烈火如歌，微微一笑很倾城，你是我的荣耀，浴血罗霄，张居正，李自成，暗算，芙蓉镇，少' \
                                    '年天子，白门柳，金瓯缺，沉重的翅膀，无字，黄河东流去，第二个太阳，骚动之秋，东方，历史的天空，抉择，额' \
                                    '尔古纳河右岸，穆斯林的葬礼，英雄时代，将军吟，战争和人，茶人三部曲，湖光山色，冬天里的春天，都市风流' \
                                    '，东藏记，许茂和他的女儿们'.split('，')
        for txt in split_list:
            if txt in zhengtiming_standard_list:
                zhengtiming_list.append(txt)

        return zhengtiming_list

    @classmethod
    def author(cls, split_list):
        '''
        作者
        :param split_list:
        :return:
        '''
        author_list = []
        # 第一种情况 ------------------------------------------
        match_txt_list = '阿·托尔斯泰，阿赫马托娃，阿加莎·克利斯蒂，阿兰·西利托，阿努伊，阿斯图里亚斯，阿西莫夫，埃利蒂斯，埃斯库罗斯，艾米' \
                         '莉·勃朗特，爱伦·坡，安东尼·霍普，安妮·勃朗特，安徒生，奥尼尔，奥斯特罗夫斯基，奥斯特洛夫斯基，巴尔扎克，巴金，白' \
                         '居易，拜伦，贝克特，比昂逊，波德莱尔，伯尔，博尔赫斯，博马舍，卜伽丘，布莱克，布莱希特，蔡元放，曹雪芹，查尔斯·勒' \
                         '特维奇 ·道奇森，褚人获，川端康成，茨威格，达夫妮·杜穆里埃，大伴家持，大仲马，但丁，德莱塞，狄更斯，狄金森，迪伦马' \
                         '特，笛福，丁尼生，都德，杜拉斯，恩岑斯·贝格尔，法捷耶夫，法朗士，凡尔哈伦，菲茨杰拉德，菲尔丁，冯梦龙，佛洛伊德，' \
                         '弗洛斯特，伏尼契，伏契克，福克纳，福楼拜，高鹗，高尔基，高尔斯华绥，高乃依，戈尔丁，戈特弗里德·凯勒，哥尔多尼，歌' \
                         '德，格林兄弟，贡布罗维奇，谷崎润一郎，广博，果戈理，哈代，哈非兹，哈谢克，海勒，海明威，海涅，海泽，赫尔曼·沃克，' \
                         '亨利·詹姆斯，壶井繁治，华兹华斯，惠特曼，霍桑，纪伯伦，济慈，加缪，迦梨陀婆，迦梨陀娑，简·奥斯汀，杰克·伦敦，芥川' \
                         '龙之介，金斯堡，君特·格拉斯，卡夫卡，柯勒律治，柯南道尔，克拉林，克莱斯特，库柏，夸西莫多，拉伯雷，拉夫列尼约夫，' \
                         '拉辛，莱蒙托夫，兰波，兰陵笑笑生，朗费罗，老舍，雷马克，李宝嘉，李时珍，里尔克，利萨尔迪，列夫·托尔斯泰，凌蒙初，' \
                         '卢梭，鲁迅，路易莎·奥尔科特，罗伯特·勃朗宁，罗伯特·路易斯·斯蒂文森，罗贯中，罗琳，罗曼·罗兰，洛尔迦，马尔克斯，马' \
                         '克·吐温，马拉美，马雅可夫斯基，麦尔维尔，麦卡洛，曼努埃尔·派诺，毛姆，茅盾，梅里美，蒙田，弥尔顿，米克沙特，米兰·' \
                         '昆德拉，米勒，米切尔，米斯特拉尔，莫泊桑，莫里哀，尼采，尼古拉·加夫里洛维奇·车尔尼雪夫斯基，聂鲁达，诺曼·梅勒，欧·' \
                         '亨利，欧里庇德斯，欧马尔·海亚姆，欧仁·苏，欧文，欧文·肖 ，帕斯，帕斯捷尔纳克，庞德，培根，裴多菲，彭斯，皮兰德娄，' \
                         '皮兰底娄，毗耶婆，品特，蒲松龄，普列维尔，普鲁斯特，普希金，普佐，契诃夫，钱钟书，乔叟，乔万尼奥里，乔伊斯，乔治·' \
                         '奥威尔，屈原，儒勒·凡尔纳，若泽·马里亚·埃萨·德·克罗兹，萨迪，萨福，萨克雷，萨特，塞尔玛·拉格洛芙，塞林格，塞万提' \
                         '斯，赛珍珠，三岛由纪夫，桑德堡，森欧外，莎士比亚，申在孝，圣·埃克苏佩里，施耐庵，石川啄木，史托姆，司各特，司汤达' \
                         '，斯蒂文斯，斯坦培克，斯特林堡，斯托夫人，斯威夫特，宋应星，索尔·贝娄，索尔仁尼琴，索福克勒斯，泰戈尔，汤显祖，屠' \
                         '格涅夫，托尔斯泰，托马斯·格雷，托马斯·曼，陀斯妥耶夫斯基，王尔德，威尔斯，威廉·威尔基·柯林斯，威廉斯，韦庄，维伽 ' \
                         '西班牙，魏尔伦，吴承恩，吴敬梓，西蒙诺夫，希克梅特，希门内斯，席勒，夏洛蒂·勃朗特，夏目漱石，显克微支，肖洛霍夫，' \
                         '萧伯纳，小仲马，辛格，辛克莱·路易斯，徐霞客，许仲琳，雪莱，亚历山大罗维奇·冈察洛夫，亚米契斯，叶塞宁，叶芝，伊丽' \
                         '莎白·勃朗宁，伊萨科夫斯基，蚁垤，佚名，易卜生，尤涅斯库，雨果，约翰·班扬，约翰·罗纳德，詹姆士·克拉维尔，紫氏部，' \
                         '紫式部，左拉，瑞尔·托尔金，莫言，辰东，杨绛，舒婷，顾城，猫腻，北岛，冯唐，钱穆，萧红，苏童，麦家，琼瑶，阿来，大' \
                         '冰，残雪，路遥，金庸，野夫，三毛，刘瑜，几米，古龙，韩寒，艾青，刘同，海子，刘慈欣，沈从文，余华，朱自清，余光中，' \
                         '汪曾祺，龙应台，贾平凹，戴望舒，王安忆，陈忠实，刘心武，毕淑敏，柴静，曹文轩，叶圣陶，席慕容，王小波，徐志摩，梁' \
                         '实秋，余秋雨，郁达夫，张爱玲，史铁生，冰心，七堇年，王国维，李泽厚，林海音，林语堂，蒋方舟，二月河，费孝通，冯骥才' \
                         '，李碧华，季羡林，周作人，丰子恺，黄仁宇，梁思成，傅高义，易中天，李笑来，李银河，曹天元，曹禺，吴念真，林清玄，林' \
                         '徽因，马伯庸，郑渊洁，周国平，汪国真，安妮宝贝，天下霸唱，天蚕土豆，亦舒，唐家三少，当年明月，我吃西红柿，郭沫若，' \
                         '匪我思存，顾漫，饶雪漫，肖克，熊召政，姚雪垠，麦加，古华，凌力，刘斯奋，徐兴业，张洁，李准，刘白羽，刘玉明，魏巍，' \
                         '徐贵祥，张平，迟子建，霍达，柳建伟，莫应丰，王火，王旭烽，周大新，李国文，孙力，宗璞，周克芹，余小惠'.split('，')
        for txt in split_list:
            if txt in match_txt_list:
                author_list.append(txt)
        # ----------------------------------------------------

        return author_list

    @classmethod
    def taozhuangshuliang(cls, split_list):
        '''
        套装数量
        :param split_list:
        :return:
        '''
        taozhuangshuliang_list = []
        # 第一种情况 ------------------------------------------
        pattern = r'(全译本共|全|共|上下|全套|套装全|上下全|足本全|套装共|上中下|辑套装全|全辑|成套全|组套全|上\.下全|上\.下)' \
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|两|〇]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  '(辑|卷|集|册|季|期|级)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                taozhuangshuliang_list.append(txt)
        # ----------------------------------------------------

        # 第二种情况 ------------------------------------------
        match_txt_list = '全两册，上、下册，上、下卷，上.下，上.下册，上.下卷，上.下两册，上.下全两册，上.中.下，上下，上下册，' \
                         '上下卷，上下全两册，上中下，上中下册，上中下卷，套装，上、中、下册，上下集，上、下，套装上下册，' \
                         '上、中、下，上、下编，上、下卷套装，一函二册'.split('，')
        for txt in split_list:
            if txt in match_txt_list:
                taozhuangshuliang_list.append(txt)
        # ----------------------------------------------------

        return taozhuangshuliang_list

    @classmethod
    def futiming(cls, split_list):
        '''
        副题名
        :param split_list:
        :return:
        '''
        futiming_list = []
        # 第一种情况 ------------------------------------------
        pattern = r'(1\d\d\d|2\d\d\d|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{4})(年|年度)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                futiming_list.append(txt)
        # ----------------------------------------------------

        # 第一种情况 ------------------------------------------
        pattern = r'(1|2)\d\d\d'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                futiming_list.append(txt)
        # ----------------------------------------------------

        # 第一种情况 ------------------------------------------
        pattern = r'(\d|[一|二|三|四|五|六|七|八|九|十|百|零|〇])(年级)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                futiming_list.append(txt)
        # ----------------------------------------------------

        # 第一种情况 ------------------------------------------
        pattern = r'以.*为例'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                futiming_list.append(txt)
        # ----------------------------------------------------

        # 第6种情况 -------------------------------------------
        match_futiming_list = '教师用书，练习册，习题集，C语言版，C++版，本科教材，习题解答与实验指导，高职高专教材，高校本科教材，' \
                              '原理、案例与应用，理论、实务与案例，实务与案例，理论及应用，理论、实训、案例，理论与实训，原理、技术与' \
                              '应用，理论与实务，理论与政策，理实一体化教材，理实一体化项目教程，理实一体化，原理与指导，理工科用，项' \
                              '目式教材，基于案例与实训，原理与实践，非机类专业，非机械类专业，机械类专业，机械类、近机械类专业，非机械' \
                              '专业用，项目式教学，学习指导书'.split('，')
        for txt in split_list:
            if txt in match_futiming_list:
                # print(txt)
                futiming_list.append(txt)
        # ----------------------------------------------------

        # 第一种情况 ------------------------------------------
        pattern = r'.*(试卷|教学用书|学生用书|专业适用)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                futiming_list.append(txt)
        # ----------------------------------------------------

        # 第一种情况 ------------------------------------------
        pattern = r'(\d\d\d\d|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{4})(年|年度|年级)?-(\d\d\d\d|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{4})(年|年度|年级)?'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                futiming_list.append(txt)
        # ----------------------------------------------------

        return futiming_list

    @classmethod
    def fencehao(cls, split_list):
        '''
        分册号
        :param split_list:
        :return:
        '''
        fencehao_list = []
        # 第1种情况 ------------------------------------------
        pattern = r'(总第|第)' \
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(辑|卷|集|册|分册|季|期|级|篇|编|部|部分|函)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        # 第2种情况 ------------------------------------------
        pattern = r'(总第|第)' \
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(辑|卷|集|册|分册|季|期|级|篇|编|部)' \
                  r'(总第|第)' \
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(辑|卷|集|册|分册|季|期|级|篇|编|部)'

        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        # 第3种情况 ------------------------------------------
        pattern = r'(.*){2,4}' \
                  r'年' \
                  r'(总第|第)' \
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(辑|卷|集|册|分册|季|期|级|篇|编|部)' \
                  r'(总第|第)' \
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(辑|卷|集|册|分册|季|期|级|篇|编|部)'

        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------


        # 第4种情况 ------------------------------------------
        pattern = r'(卷|卷第|Vol\.|VoL\.|Vol|VoL)'\
                  r'(' \
                  r'\d{1,3}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        # 第5种情况 ------------------------------------------
        pattern = r'(' \
                  r'\d{1,4}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(编|年辑|期|年级上|年级上册|年级下|年级下册)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        # 第6种情况 ------------------------------------------
        pattern = r'小学(' \
                  r'\d{1,4}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,6}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r')' \
                  r'(年级上|年级上册|年级下|年级下册)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        # 第7种情况 -------------------------------------------
        match_fence_list = ['上', '上册', '下', '下册', '中', '中册', '上卷', '中卷', '下卷']
        for txt in split_list:
            if txt in match_fence_list:
                # print(txt)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        # 第8种情况 ------------------------------------------
        pattern = r'\d{1,2}' \
                  r'|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6}' \
                  r'|[Ⅰ|Ⅱ|Ⅲ|Ⅳ|Ⅴ|Ⅵ|Ⅶ|Ⅷ|Ⅸ|Ⅹ|Ⅺ|Ⅻ]{1,2}' \
                  r'|[壹|贰|叁|肆|伍|陆|柒|捌|玖|拾|佰|仟]{1,6}' \
                  r'|[I|II|III|IV|VI]{1,6}'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fencehao_list.append(txt)
        # ----------------------------------------------------

        return fencehao_list

    @classmethod
    def fenceming(cls, split_list):
        '''
        分册名
        :param split_list:
        :return:
        '''
        fenceming_list = []
        # 第一种情况 ------------------------------------------
        pattern = r'.*(分册|篇|卷|类)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fenceming_list.append(txt)
        # ----------------------------------------------------

        fenceming_standard_list = '附卷，小学部分，高中部分，初中部分，宏观部分，微观部分，初小部分，中学部分，模拟部分，' \
                                  '微观经济学部分，系统案例部分，微观部分习题册，中级，低级，高级，初级，中高级，中高级本，' \
                                  '非专业用，活动手册，非专业适用'.split('，')
        for txt in split_list:
            if txt in fenceming_standard_list:
                fenceming_list.append(txt)

        return fenceming_list

    @classmethod
    def banbenbeizhu(cls, split_list):
        '''
        版本备注
        :param split_list:
        :return:
        '''
        banbenbeizhu_list = []
        # 第一种情况 ------------------------------------------
        pattern = r'(原著第|插图第|插图修第|插图修订第|全彩插图第|全新升级第|新升级第|修订第|影印第|原版第|最新第|新订|畅销|第|原书第)(\d{1,3}|[一|二|三|四|五|六|七|八|九|十|百|零]{1,6})(版|次修订版)'

        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                banbenbeizhu_list.append(txt)
        # ----------------------------------------------------
        return banbenbeizhu_list

    @classmethod
    def banbenshuoming(cls, split_list):
        '''
        版本说明
        :param split_list:
        :return:
        '''
        banbenshuoming_list = []
        banbenshuoming_standard_list = '白话版，白金版，白金典藏版，白金升级版，白金增订版，白金珍藏版，北方版，本科试用本，铂金精华版，' \
                                       '补卷，补正版，彩版，彩插精装版，彩绘版，彩绘本，彩绘注音，彩绘注音版，彩色版，彩色插图版，彩色插' \
                                       '图珍藏本，彩色插页版，彩色绘图本，彩色精印版，彩色图文珍藏版，彩图版，彩图拼音版，彩图拼音精装版，' \
                                       '彩图全解版，彩图收藏版，彩图无障碍版，彩图珍藏版，彩图注音，彩图注音版，彩印版，藏书珍藏版，草书版' \
                                       '，册页版，插画版，插图版，插图本，插图典藏版，插图典藏本，插图新校版，插图遗稿，插图增补版，插图' \
                                       '珍藏版，插图珍藏本，插图注释版，畅销版，畅销精华版，畅销升级版，畅销修订版，畅销珍藏版，超清彩图' \
                                       '版，超炫图解版，超值白金版，超值版，超值彩色版，超值彩图版，超值畅销版，超值典藏白金版，超值' \
                                       '金版，超值精华版，超值全彩，超值全彩白金版，超值全彩珍藏版，超值视频版，超值完全版，初学者专用' \
                                       '版，初学者专用简易版，初中版，初中生版，创意解读版，纯美典藏版，纯美纪念版，大师插图本，大音符' \
                                       '版，大众版，大众放大版，大字版，大字大图版，单色印刷，单书版，弹唱版，导读注释版，德文版，典藏' \
                                       '版，典藏本，典藏纪念版，典藏套装版，点校版，电影版，东南亚版，读者原创版，多媒体升级版，俄文版' \
                                       '，二维码视频版，二维码视频教学版，法文版，繁简版，繁体版，繁体字竖排本，高职高专版，光盘版，国际' \
                                       '版，海外版，韩文版，汉德对照，汉俄对照，汉俄双语版，汉英对照，豪华珍藏版，合订本，红色版，湖北版' \
                                       '，华北版，华中版，黄金典藏版，黄金珍藏版，绘画版，活页演奏版，极简版，纪念版，纪念典藏版，纪念珍' \
                                       '藏版，技法版，家庭版，简化畅弹版，简明版，简明修订版，简谱版，简体版，简体版楷书，简体字精装版，' \
                                       '简线谱版，简易版，鉴赏版，胶带版，教材版，教学版，教学指导版，金版，金榜版，金装典藏版，进阶版，' \
                                       '经典版，经典彩插版，经典插图版，经典大字版碑帖，经典典藏版，经典国学无障碍阅读版，经典权威版，经' \
                                       '典全译本，经典收藏版，经典译评版，经典油画原大版，经典珍藏版，精编版，精编版漫画技法，精编本，精' \
                                       '编美绘版，精编普及版，精编青少年版，精彩演绎版，精粹版，精读本，精华版，精华本，精华大全版，精华' \
                                       '速学版，精讲版，精美彩色版，精品彩图注音版，精缩版，精校版，精选版，精选点评版，精选修订版，精选' \
                                       '译评版，精要版，精印本，精注版，精装彩插独家注释版，精装插图版，精装插图本，精装插图本新版，精装' \
                                       '典藏版，精装绘本，精装索引版，精装特藏版，精装新版，精装修订版，精装增补版，精装珍藏版，乐理版，' \
                                       '亮光铜版，漫画版，毛边本，美国版，美绘版，美绘版优选本无障碍阅读，美绘导读版，美绘青少版，美绘' \
                                       '少年版，美绘珍藏版，美绘注音版，美图版，萌宠精华版，描临版，名家注译本，名师导读版，名师导读美绘' \
                                       '版，名著插图本，慕课版，农家版，女孩版，拼音版，品藏版，评注版，普及版，签名+钤印版，签名版，签' \
                                       '名本，签名钤印版，钤印版，浅易版，巧学版，亲子版，青年版，青少版，青少年版，青少年彩图版，趣味版' \
                                       '，权威版，权威金版，权威精装版，权威全译本精装插图珍藏版，权威图文版，权威详解版，权威珍藏版，全' \
                                       '本插图典藏版，全彩，全彩版，全彩版线装，全彩插图版，全彩插图评注版，全彩典藏版，全彩精华版，全彩' \
                                       '配图版，全彩升级版，全彩图解版，全彩图解典藏版，全彩图文版，全彩微课版，全彩修订版，全彩珍藏版，全' \
                                       '彩注音，全高清视频讲解版，全景插图版，全球版，全文版，全文影印，全文影印版，全文注音版，全新版，' \
                                       '全新畅销升级版，全新超值版，全新翻译版本，全新精华版，全新精校版，全新升级版，全新校勘图文珍藏' \
                                       '版，全新修订版，全新修订彩色典藏版，全新修订典藏版，全新增订版，全新增订本，全译本，全译插图本' \
                                       '，全注全译彩图版，全注全译精装版，人教PEP版，人教版，日文版，删定本，上海版画，少儿版，少儿教学' \
                                       '版，少年版，升级版，生词注音版，声像版，实拍版，实用版，实用教学版，实战案例版，实战版，实战加' \
                                       '强版，世纪新版，试验修订本，试用本，视频版，视频讲解版，视频教学版，视频学习版，视音频版，收藏版' \
                                       '，手绘版，手绘彩插珍藏版，手绘彩图修订版，手绘珍藏纪念版，手拓本，数字版教材，数字教材，数字教材' \
                                       '版，双版本，双封烫金珍藏版，双色版，双色插图版，双色超值版，双色配图版，双色通解版，双色图解版，' \
                                       '双色图文版，双色注音版，双语，双语版，水墨插图版，水写放大版，缩略版，套装版，套装不拆卖，特别纪' \
                                       '念版，贴画版，通用版，铜版纸彩印精装，图绘全像版，图解版，图文版，图文本，图文典藏版，图文纪念版' \
                                       '，图文精印版，图文全纪录珍藏版，图文修订典藏版，图文珍藏版，图文珍藏本，图文最新版，土耳其文版，' \
                                       '外研版，完美修订版，完整版，微课版，微课教学版，唯美典藏版，文白对照版，文联版，文通版，无障碍阅' \
                                       '读，无障碍阅读权威版，五线谱版，系列书不单发，现代白话版，现代插图版，现代汉语原版，线谱版，线装' \
                                       '典藏版，湘美版，详解版，小学版，小学生版，校园版，新1版，新版，新版精装，新版全译本，新版增订，' \
                                       '新编彩版，新千年版，新修订版，新修精装珍藏本，新修珍藏版，新一版，新译本，新装版，修订，修订版' \
                                       '，修订本，修订和增补版，修订纪念版，修订升级版，修订新版，修订袖珍版，修正版，宣纸版，宣纸珍藏' \
                                       '版，学生版，学习版，学院典藏版，哑光铜版，亚洲版，演奏提示版，阳光版，彝文版，音乐版，吟诵版，' \
                                       '进版，英汉对照，英汉对照版，英汉对照本，英汉双语，英文，英文版，英文版新版，英文导读版，英文卷，' \
                                       '英文影印版，英文影印插图版，英文中文对照，英文注释版，英译本，英语版，影印版，影印珍藏版，应用型' \
                                       '本科版，永恒珍藏版，邮票插图版，有声版，有声版全彩插图，幼儿版，幼儿注音美绘本，原版引进，原作版' \
                                       '，增补，增补版，增补本，增补修订版，增订，增订版，增订版套装，增订本，增订纪念版，增修版，摘要版' \
                                       '，珍藏版，珍藏版注音本，珍藏精装版，珍藏修订版，珍稀版本丛刊，正版，纸袋版，中国版，中国学生版，' \
                                       '中级版，中老年版，中老年大字版，中日文对照，中日文对照版，中文版，中文导读插图版，中文简体字版' \
                                       '，中文修订版，中学生版，中学生精华版，中学生珍藏版，中意双语版，中英双语，中英双语版，中英文版，' \
                                       '中英文插图影印典藏版，中英文对照，终结版，重编本，重排本，周年纪念版，注评版，注释版，注释版全球' \
                                       '版，注释本，注音版，注音彩图版，注音美绘版，注音全彩美绘版，专业版，追思纪念版，综合版，足本，足' \
                                       '本美绘版，足本通解，足本绣像版，足本珍藏版，最新版，最新版图文本，最新插图本，最新出版，最新经典' \
                                       '珍藏版，最新升级版，最新完全版，最新修订版，最新修订本，最新修订精装典藏版，最新增订版，最新整理' \
                                       '版，最新整理图文珍藏版，尊享版，AR交互版，DVD版，DVD教学版，彩色，影印本，新书，双色新书，彩版' \
                                       '新书，四色印刷，璀璨版，少儿彩绘版，线装影印版，引进版，加拿大引进版，中英对照全译本，2012铂金精' \
                                       '华版，最新彩色版，礼盒珍藏版，最新图文版，中文翻译版，插图纪念版，中文导读英文版，彩图典藏版，签' \
                                       '名铃印本，日本原版，缩印本，修订缩印本，英汉双语版，汉英双语版，中英文双语版，彩插版，励志版，彩' \
                                       '插励志版，全本，校注版，钤印本，高教版，乱序便携版，便携版，春季版，法语版，波斯语版，俄语版，德' \
                                       '语版，土耳其语版，罗马尼亚语版，葡萄牙语版，韩语版，荷兰语版，西班牙语版，豪萨语版，阿尔巴尼亚' \
                                       '语版，日语版，乌尔都语版，最新双语版，波兰语版，泰语版，经典双语版，老挝语版，彩色插图本，单色' \
                                       '，双色本，完美典藏版，冰岛语版，缅甸语版，瑞典语版，韩国语版，丹麦语版，印地语版，塔吉克语版，' \
                                       '挪威语版，匈牙利语版，尼泊尔语版，韩双语版，克罗地亚语版，乌克兰语版，塞尔维亚语版，汉日双语版' \
                                       '，斯瓦西里语版，希伯来语版，斯瓦希里语版，蒙古语版，精装典藏本，案例版，精修案例版，微课案例版' \
                                       '，大赛案例版，朗读+解析版，双色印刷，中外文对照，分类版，中英对照，双语典藏，中英双语典藏本，珍' \
                                       '藏限量版，无光盘，全新修订完整版，原版插图，原版插图本，珍藏纪念版，赠12节教学视频，彩色图解' \
                                       '，彩色图解版，汉马对照，无障碍阅读版，无障碍阅读本，无障碍阅读学生版，名师解读版，解读版，青春' \
                                       '版，中文简体版，汉日对照版，汉英对照版，视频升级版，签名珍藏版图解双色版，双色缩印版，双色绘图' \
                                       '版，双色版，双色本，双色，辞海版，绣像珍藏版，翻译版，珍藏本，名师精评版，精英版，微课视频版，基' \
                                       '础版，英汉双语对照，少学时，缩编版，英文改编版，多学时，本科教学版，中、少学时，3D版，儿童版，光' \
                                       '盘实战版，沪科版，修订扩展版，精装纪念版，彩色升级版，全彩图解，提高版，英文影印注释版，河北省版' \
                                       '，英文精编版'.split('，')
        for txt in split_list:
            if txt in banbenshuoming_standard_list:
                banbenshuoming_list.append(txt)

        # 第一种情况 ------------------------------------------
        pattern = r'(19\d\d|20\d\d|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6})(年版|年修订版|最新版|中文版|新版|周年纪念版|周年典藏版|版|新版)'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                banbenshuoming_list.append(txt)
        # ----------------------------------------------------


        return banbenshuoming_list

    @classmethod
    def bind(cls, split_list):
        '''
        装帧
        :param split_list:
        :return:
        '''
        bind_list = []
        bind_standard_list = '白胶，白胶版，半精装，册页订，车线胶装，穿孔结带活页装，带槽方脊本，带槽圆脊本，法式精装，方形书脊，覆膜' \
                             '平装，函套，豪华本，盒装，活页订，活页装，假精，假精装，简装，胶版纸，胶背订，胶订，胶膜，结绳订，精装，' \
                             '精装版，精装本，精装加护封，精装套盒，螺旋活页装，铆钉订，平订，平胶勒口，平塑，平装，平装本，平装胶订，' \
                             '骑马订，腔背装，全织物精装，柔背装，软精装，梳齿活页装，索线精装，锁线订，锁线胶装，特种皮，特装，特装本' \
                             '，无槽方脊本，无槽圆脊本，无线胶订，无线胶订膜勒口，无线胶装，线装，线装本，线装书，硬背装，硬精装，有函' \
                             '套精装，圆形书脊，纸精版，纸面精装，纸面精装方，纸面精装圆，简装版，礼品装，函套装，精，箱装，塑封，鎏金' \
                             '口，平，普通装，平装双色，双色线装'.split('，')
        for txt in split_list:
            if txt in bind_standard_list:
                bind_list.append(txt)

        return bind_list

    @classmethod
    def fujian(cls, split_list):
        '''
        附资源（附件）
        :param split_list:
        :return:
        '''
        fujian_list = []
        fujian_standard_list = '附常用职业英语词汇表，附大纲，附光盘，附解答，附卷，附考核大纲，附朗读，附实验，附思考题答案参考，附外贸' \
                               '会计大纲，附习题集，附习题解答，附学习指导，附英文文本，附英语自学考试大纲，附赠MP3光盘，附赠超值光盘，' \
                               '附赠光盘，附赠精美书签，附赠精美贴纸，附赠练习手册，附赠品，附自学考试大纲，含DVD，含附件1份，含关键词，' \
                               '含光盘，含国际公法、国际私法，含活页练习册，含考核目标，含练习册，含练习题，含免费赠送习题集，含实训，含' \
                               '实训指导，含同步学习指导手册，含刑法、刑事诉讼法，含自考大纲，含综合练习册，另配磁带，配磁带，配光盘，配' \
                               '套赠送学生用盘，配学习指导书，随书赠送光盘，随书赠送光盘、附综合练习，随书赠送光盘、综合练习册，随书赠送教' \
                               '学光盘，随书赠送实训用纸，随书赠送实训指导，随书赠送试验用纸，随书赠送习题集，随书赠送综合练习册，赠光盘' \
                               '，赠课件，赠练习册，赠送光盘，赠送实训指导，赠习题集，本书附赠光盘，DVD盘，免费附赠MP3，免费附赠MP3光盘' \
                               '，随书附赠MP3，随书附赠MP3光盘一张，随书附赠MP3朗读光盘，随书赠送CD1张，内附mp3光盘一张，内附mp3光盘，' \
                               '内附MP3朗读光盘，含DVD互动光盘1张，内附光盘一张，含mp3光盘1张，附MP3光盘1张，附MP3光盘一张，附MP3光盘，' \
                               '附赠DVD光盘一张，附赠英文原版，含1DVD，附DVD1张，附赠1DVD，含视频教学，含教学视频，随书赠送DVD二张，送光盘一张，' \
                               '含MP3一张，附赠多媒体光盘，附赠1CD，赠1CD，赠送电子课件，免费赠送电子课件，免费赠送电子课件及习题答案，' \
                               '含MP3光盘，含DVD光盘一张，随书附赠CD1盘，赠送MP3光盘，附赠VCD光盘一张，含CD光盘一张，附送全文电子书，' \
                               '1书+1MP3光盘，赠送MP3光盘，送MP3光盘，超值赠送MP3光盘，附答案和听力CD，附一盘CD，赠DVD，附赠DVD光盘1张，' \
                               '附书附赠DVD，附赠DVD，含1CD，附音频资料，配课件，随书附赠《导读手册》，随书附赠《能力训练手册》，' \
                               '含1张MP3，含1张MP3光盘，讲课版，书+MP3，含mp3光盘，含MP3光盘1盘，含mp3光盘一张,含上机指导，含提示，' \
                               '含1CD，配实训工单，含习题集，含习题册，配习题集，含工作页，附盘，含解答，附教学视频，1碟'.split('，')
        for txt in split_list:
            if txt in fujian_standard_list:
                fujian_list.append(txt)

        # 第一种情况 ------------------------------------------
        pattern = r'(随书附赠|随书赠送光盘|随书赠送学习光盘|赠送光盘|赠送学习光盘|赠送双语光盘|赠送MP3光盘|含原版录音光盘|含光盘|含MP3光盘|含CD-ROM光盘|含|附赠光盘|附赠MP3光盘|磁带|附光盘)' \
                  r'(\d{1,3}|[一|二|三|四|五|六|七|八|九|十|百|零|〇]{1,6})' \
                  r'(张|盒|张DVD光盘|张CD)'

        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                fujian_list.append(txt)
        # ----------------------------------------------------

        return fujian_list

    @classmethod
    def kaiben(cls, split_list):
        '''
        开本
        :param split_list:
        :return:
        '''
        kaiben_list = []
        kaiben_standard_list = 'A5，A4，B5，16开，32开，横大16，大16，大32，大16开，大32开，横8，横16，横A4'.split('，')
        for txt in split_list:
            if txt in kaiben_standard_list:
                kaiben_list.append(txt)

        return kaiben_list

    @classmethod
    def congshuming(cls, split_list):
        '''
        丛书名
        :param split_list:
        :return:
        '''
        congshuming_list = []
        # 第一种情况 ------------------------------------------
        pattern = r'.*(丛书|系列丛书|系列教材|文丛|文库|大系|文选|选编|合集|文集|译丛|论丛|系列专著|大全|作品精选|作品精选集|全集|集成|' \
                  r'书系|名录|精选|世界文学名著|系列|作品精粹|十万个为什么|全解|系列读本|故事集|作品集|作品选集|诗歌集|精品集|名著典藏|' \
                  r'精品集|自选集|全编|类编|全书|系列绘本|系列故事|精品选|丛编|年度精选集|文学集|丛刊|自述集|书库|小说选|作品选|系列小说|' \
                  r'系列绘本|作品典藏|系列教材|散文经典|散文选集|宝典|系列谈|诗选|大师典藏|部曲|精选集)'

        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                congshuming_list.append(txt)
        # ----------------------------------------------------

        # 第二种情况 ------------------------------------------
        pattern = r'世界.*集'
        for txt in split_list:
            s = re.fullmatch(pattern, txt)
            # print(s)
            if s:
                # print(txt)
                # match_str = s.group()
                # print(match_str)
                congshuming_list.append(txt)
        # ----------------------------------------------------

        # 第三种情况 ------------------------------------------
        congshuming_standard_list = '福尔摩斯探案集，诺贝尔文学奖作家作品，十万个为什么，世界经典动物故事，世界文学名著，' \
                                    '外国文学经典，中国民间故事，中国文学经典，世界文学名著名家名译，名家名译，历代名家小楷珍' \
                                    '品，经典文学名著金库，四大名著，中小学经典阅读名家名译'.split('，')
        for txt in split_list:
            if txt in congshuming_standard_list:
                congshuming_list.append(txt)
        # ----------------------------------------------------

        return congshuming_list

def str_plus(str1, str2):
    '''
    将两个可能为None的字符中间加个分号组成一个字符串
    :param str1:
    :param str2:
    :return:
    '''
    if not isNaNo(str1) and not isNaNo(str2):
        return str1 + ';' + str2
    elif not isNaNo(str1) and isNaNo(str2):
        return str1
    elif isNaNo(str1) and not isNaNo(str2):
        return  str2
    return None

def isNaNo(sth):
    if not sth:
        return True
    if isinstance(sth, float):
        if np.isnan(sth):
            return True
    return False



if __name__ == '__main__':

    res = ReMatchFunc.fencehao(['2015年辑', '第4期第8辑'])
    print(res)

    res = ReMatchFunc.congshuming(['xx宝典', 'xx系列谈'])
    print(res)

    res = ReMatchFunc.futiming(['2248'])
    print(res)